- title: '`sidekiq` delivery method for `incoming_email` and `service_desk_email` is deprecated'
  announcement_milestone: '16.0'
  removal_milestone: '17.0'
  breaking_change: true
  reporter: msaleiko
  stage: Monitor
  issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/398132
  body: |
    The `sidekiq` delivery method for `incoming_email` and `service_desk_email` is deprecated and is
    scheduled for removal in GitLab 17.0.

    GitLab uses a separate process called `mail_room` to ingest emails. Currently, GitLab administrators
    can configure their GitLab instances to use `sidekiq` or `webhook` delivery methods to deliver ingested
    emails from `mail_room` to GitLab.

    Using the deprecated `sidekiq` delivery method, `mail_room` writes the job data directly to the GitLab
    Redis queue. This means that there is a hard coupling between the delivery method and the Redis
    configuration. Another disadvantage is that framework optimizations such as job payload compression are missed.

    Using the `webhook` delivery method, `mail_room` pushes the ingested email body to the GitLab
    API. That way `mail_room` does not need to know your Redis configuration and the GitLab application
    adds the processing job. `mail_room` authenticates with a shared secret key.

    Reconfiguring an Omnibus installation generates this secret key file automatically,
    so no secret file configuration setting is needed.

    You can configure a custom secret key file (32 characters base 64 encoded) by running a command
    like below and referencing the secret file in `incoming_email_secret_file` and
    `service_desk_email_secret_file` (always specify the absolute path):

    ```shell
    echo $( ruby -rsecurerandom -e "puts SecureRandom.base64(32)" ) > ~/.gitlab-mailroom-secret
    ```

    If you run GitLab on more than one machine, you need to provide the secret key file for each machine.

    We highly encourage GitLab administrators to start using the `webhook` delivery method for
    `incoming_email_delivery_method` and `service_desk_email_delivery_method` instead of `sidekiq`.
  tiers: [Free, Silver, Gold, Core, Premium, Ultimate]
  documentation_url: https://docs.gitlab.com/ee/user/project/service_desk.html#use-a-custom-email-address
